home *** CD-ROM | disk | FTP | other *** search
- alint 1.00 04/26/86
-
- Purpose
- -------
-
- Alint is a miniature "lint" for assembler programmers. It can
- help you find data-type conflicts between modules of
- multi-module assembler programs.
-
- For example, if you declare in Module A:
-
- public a_var
- a_var dw ?
-
- and in Module B:
-
- extrn a_var:byte
-
- you will find that neither the assembler nor the linker will
- tell you that you have made a mistake. If you were to code in
- Module B:
-
- mov a_var,0
-
- the assembler will clear only the low byte of the data word
- 'a_var'. This kind of error can lead to obscure runtime
- problems and is very difficult to debug. Alint can detect this
- type of error.
-
- Alint can optionally produce a cross-reference of all global
- variables in a multi-module assembler program.
-
-
- Use
- ---
-
- To use alint in its default mode, simply type 'alint' at the
- DOS prompt:
-
- C> alint<Enter>
-
- Alint will prompt for the names of the source files one by one;
- enter the names of the assembler source files you want checked,
- including drive and path if necessary. If you do not include an
- extension, alint will first look for the file as given; if it is
- not found, it will then append the extension '.asm' and try
- again.
-
- When you have entered all of the names, respond to the 'Source
- file?' prompt by just hitting <Enter>.
-
- Alint will then read the source files one by one, and display a
- list of errors when it is done.
-
- If you have many files to process, you may wish to instead
- prepare a text file containing a list of the names of files to
- be processed. You can tell alint to read this "response file"
- by placing its name on the command line:
-
- alint filelist.txt
-
- Use only one filename per line in your response file. Any line
- beginning with a semicolon will be ignored, thus allowing
- comments.
-
-
- Output format
- -------------
-
- Alint will display certain information about each data item for
- which any error was detected. This information includes:
-
- 1. The name of the item.
- 2. The name of the source file in which it is defined, along
- with the data type (byte, word, dword, qword, tbyte) and
- the line number in which it is defined.
- 3. The names of the source files in which the item is
- referenced via EXTRN, along with the EXTRN line number
- and data type.
-
- For example:
-
- MYVAR
- Def dword 116 file1.asm
- Ref word 5 file2.asm
- Ref byte 14 file3.asm *** TYPE MISMATCH ***
-
- The line marked DEF (for DEFinition) indicates that the variable
- MYVAR is defined (and PUBLIC) in the source file FILE1.ASM. It
- is defined as a WORD quantity (either via DW or LABEL WORD) in
- line 116 of FILE1.ASM.
-
- The first REF (for REFerence) line indicates that MYVAR is
- referenced via an EXTRN statament in line 5 of the source file
- FILE2.ASM, and that it is declared to be a WORD variable.
-
- The second REF line indicates that MYVAR is also referenced in
- an EXTRN statament in line 14 of FILE3.ASM. Here it is declared
- to be a BYTE, and this is a type mismatch.
-
- If the same variable is declared PUBLIC in more than one module,
- subsequent DEF lines will be marked '*** MULT DEF ***'.
-
- If a variable is declared PUBLIC in one or more modules, but no
- EXTRN references were found, alint will display the message
- '*** NO REF ***'.
-
- If an EXTRN reference was found for a variable for which there
- is no PUBLIC declaration, alint will display the message '*** NO
- DEF ***'. Certain definition constructs will elude alint (such
- as 'buffer equ $'), so this message may sometimes be issued
- erroneously. See the 'Limits' section below.
-
-
- Obtaining a cross-reference
- ---------------------------
-
- Normally, alint will display information about a data item only
- if it found one of the errors described above. You can obtain a
- complete PUBLIC/EXTRN cross-reference by adding a '-x' switch
- when you invoke alint:
-
- alint -x filelist.txt
-
- With the -x switch, alint will display all information described
- above.
-
-
- Output Redirection
- ------------------
-
- You can redirect alint's principal output using DOS's standard
- redirection facility. The program logo and the list of files
- being processed will not appear in the output file.
-
- For example, this will write a complete cross-reference to the
- text file 'xref.txt':
-
- alint -x filelist.txt > xref.txt
-
-
- Demo files
- ----------
-
- Alint is accompanied by three demonstration files:
-
- demo.lst
- demo1.asm
- demo2.asm
-
- These files provide a small demo of how alint works. DEMO1.ASM
- and DEMO2.ASM are two small assembler files (dummies) that
- contain a few errors. DEMO.LST is a small text file containing
- the names of the two programs; you can use this as an alint
- response file. To see the program run, just type:
-
- alint demo.lst
-
- -or-
-
- alint -x demo.lst
-
-
- Limits
- ------
-
- All PUBLIC statements are assumed to precede the items to which
- they refer. Although this is not a MASM requirement, it
- considerably simplifies alint processing, making it faster and
- smaller (and eliminating the need for two passes through the
- source).
-
- Alint is interested ONLY in:
-
- 1. PUBLIC items that are SUBSEQUENTLY defined via one of:
- a. DB (Define Byte)
- b. DW (Define Word)
- c. DD (Define Doubleword)
- d. DQ (Define Quadword)
- e. DT (Define Ten-byte)
- f. LABEL BYTE
- g. LABEL WORD
- h. LABEL DWORD
- i. LABEL QWORD
- j. LABEL TBYTE
-
- 2. EXTRN items with an attribute of:
- a. BYTE
- b. WORD
- c. DWORD
- d. QWORD
- e. TBYTE
-
- Note in particular that alint does NOT attempt to reconcile code
- labels (NEAR/FAR). The linker should do this for you. Also,
- alint does not understand data defined via constructs such as
- 'buffer equ $'. This may lead to a few incorrect error
- messages.
-
- There is a limit of 200 PUBLICs and 200 EXTRNs per source file.
-
- There is a limit of 100 source files.
-
- Source files are assumed to be syntactically correct. Comments
- are ignored (both inline ';' comments and COMMENT blocks), and
- alint is case insensitive.
-
- All references are stored in memory, and this is a small-model
- program. There is obviously some limit to the total number of
- data references that alint can handle, but I haven't run into it
- yet.
-
-
-
- License/Copyright
- -----------------
-
- ALINT is a copyrighted work. However, the copyright owner
- hereby grants you a license to: use the program on one or more
- machines; make as many copies of the program and documentation
- as you wish for yourself and others; and distribute the program
- and documentation via electronic or other means.
-
- HOWEVER, YOU MAY NOT SELL THE PROGRAM OR ANY MODIFICATION OF IT,
- REQUEST DONATIONS FOR DISTRIBUTION OF THE PROGRAM, OR IN ANY
- OTHER WAY TRY TO MAKE MONEY FROM MY WORK. I MEAN IT.
-
- A limited exception to the above is granted to RECOGNIZED
- USERS' GROUPS ONLY, which are authorized to charge a reasonable
- fee to cover the cost of media, postage, and handling only.
-
- If you do give away copies of ALINT, you MUST distribute the
- program and documentation together. This notice must not be
- deleted.
-
- I do not warrant that ALINT does anything worthwhile or that
- this document is accurate. I am not liable for any damages of
- any kind related to the use of the program. By using the
- software, you agree to this.
-
-
- ALINT and this document are
- Copyright (c) 1986 by
- Christopher J. Dunford
- 10057-2 Windstream Drive
- Columbia, MD 21044 USA
-
- CompuServe 76703,2002
-